import message from "@/common/message.js"

// 上传文件
const uploadFile = (url, filePath, name, formData, fileType, ) => {
	return new Promise(reslove => {
		uni.uploadFile({
			url: url, //开发者服务器 url
			filePath: filePath, //要上传文件资源的路径。
			name: name, //文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容
			formData: formData, //HTTP 请求中其他额外的 form data
			fileType: fileType, //文件类型，image/video/audio 仅支付宝小程序，且必填。
			success: (uploadFileRes) => {
				reslove(uploadFileRes);
			},
			fail(err) {
				reslove({
					err: err
				});
			}
		});

	})
}


//下载文件
const downloadFile = (url, onProgressUpdate) => {
	return new Promise(reslove => {
		let downloadTask = uni.downloadFile({
			url: url, //仅为示例，并非真实的资源
			success: (res) => {
				reslove(res)
			},
			fail(err) {
				reslove({
					err: err
				})
			}
		});
		downloadTask.onProgressUpdate((res) => {
			
			if (onProgressUpdate != null) {
				onProgressUpdate(res)
			}
			// 测试条件，取消下载任务。
			if (res.progress > 100) {
				downloadTask.abort();
			}
		});
	})
}
// 保存文件到本地。
const saveFile = (tempFilePath) => {
	return new Promise((resolve, reject) => {
		uni.saveFile({
			tempFilePath: tempFilePath,
			success: function(res) {
				resolve(res)
			},
			fail: function(err) {
				resolve({
					data: err,
					err: err
				})
			}
		})
	})
}
// 获取本地已保存的文件列表。
const getSavedFileList = () => {
	return new Promise(resolve => {
		uni.getSavedFileList({
			success: function(res) {
				resolve(res)
			},
			fail: function(err) {
				resolve({
					data: err,
					err: err
				})
			}
		});
	})
}
// 获取本地文件的文件信息。此接口只能用于获取已保存到本地的文件。
const getSavedFileInfo = (filePath) => {
	return new Promise(resolve => {
		uni.getSavedFileInfo({
			filePath: filePath,
			success: function(res) {
				resolve(res)
			},
			fail: function(err) {
				resolve({
					data: err,
					err: err
				})
			}
		});
	})
}
// 删除本地存储的文件。
const removeSavedFile = (filePath) => {
	return new Promise(resolve => {
		uni.removeSavedFile({
			filePath: filePath,
			success: function(res) {
				resolve(res)
			},
			fail: function(err) {
				resolve({
					data: err,
					err: err
				})
			}
		});
	})
}
//新开页面打开文档，支持格式：doc, xls, ppt, pdf, docx, xlsx, pptx。
const openDocument = (filePath) => {
	return new Promise(resolve => {
		uni.openDocument({
			filePath: filePath,
			success: function(res) {
				resolve(res)
			},
			fail: function(err) {
				resolve({
					data: err,
					err: err
				})
			}
		});
	})
}

const chosefile = () => {
	return new Promise(resolve => {
		// #ifdef  MP-WEIXIN
		wx.chooseMessageFile({
			count: 1,
			type: 'file',
			success(res) {
				resolve(res)
			},
			fail: function(err) {
				resolve({
					err: err
				})
			}
		})
		// #endif
		// #ifdef APP-PLUS
		// plus.io.requestFileSystem(plus.io.PRIVATE_DOC, function(fs) {
		// 	// 可通过fs操作PRIVATE_WWW文件系统 
		// 	// ......
		// 	console.log(fs)
		// }, function(e) {
		// 	console.log("Request file system failed: " + e.message)
		// 	
		// })
		message.showToast("app端暂未支持文件选择，请转移到小程序进行操作")
		resolve({
			err: err
		})
		// #endif
	})

}

export default {
	uploadFile, //上传文件
	downloadFile, //下载我呢见	
	saveFile, //保存文件
	getSavedFileList, //获取本地已保存的文件列表。
	getSavedFileInfo, //获取本地文件的文件信息。此接口只能用于获取已保存到本地的文件。
	removeSavedFile, //删除本地存储的文件。
	openDocument, //新开页面打开文档，支持格式：doc, xls, ppt, pdf, docx, xlsx, pptx。
	chosefile
}
